package io;

import java.io.*;
import java.nio.charset.StandardCharsets;

public class BRDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fIleInputStream = new FileInputStream("./src/main/java/io/BRDemo.java");
        //转换流 用于高级字符流和文件输入字节流的链接
        InputStreamReader inputStreamReader = new InputStreamReader(fIleInputStream, StandardCharsets.UTF_8);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        /*
         * BufferedReader定义的读取一行字符串的方法:
         * String readLine()
         * 读取一行字符串并返回，返回的字符串末尾不含有这一行的换行符。
         * 如果读取到了空行(该行只有换行符，没有其他内容)时返回空字符串
         * 如果读取到了流的末尾，则返回值为null
         *
         * 缓冲流的本质是块读，由于内部默认8192场的char数据，所以当我们第一次调用readLine方法时，实际上缓冲流就会一次性读取8192个字符并存入到
         * 内部数组中，然后将数组中一行字符串返回(从数组第一个字符开始扫描，扫描到换行符时提一下，然后将之前的所有字符组成一个字符串返回)
         * 当第二次调用readLine时则直接从内部char数据上次停止的位置继续向后扫描若干个字符直到遇到换行符廷议下，将之前内容组成字符串返回，如此反复
         * 直到若凡此调用readLine后若将char数组所有内容都使用完毕了，此时缓冲流才会在此读取8192个字符回来继续上述工作
         * */
/*        String line = bufferedReader.readLine();
        System.out.println(line);*/
        String line;
        //同样\t也会被读取到的
        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
        bufferedReader.close();
    }
}
